﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace BezPanike.Domain.Services
{
    public class KorisniciService
    {
        readonly BezPanikeContextDataContext _context = new BezPanikeContextDataContext();

        public bool ProveriDaliKorisnikPostoji(string username, string password)
        {
            var query = (from korisnici in _context.Korisnici
                         where korisnici.KorisnickoIme == username && korisnici.Lozinka == password
                         select korisnici).SingleOrDefault();

            if (query != null)
                return true;
            else
                return false;

        }

        public bool DaliJeKorisnikAdmin(string username)
        {
            var query = (from korisnici in _context.Korisnici
                         where korisnici.KorisnickoIme == username
                         join korisniciUloge in _context.KorisniciUloges on korisnici.Id equals
                             korisniciUloge.KorisnikId
                         select korisnici).SingleOrDefault();

            return query != null;
        }

        public Korisnici PrijaviKorisnikaPoKorisnickomImenuLozinci(string username, string password)
        {
            var query = (from korisnici in _context.Korisnici
                         where korisnici.KorisnickoIme == username && korisnici.Lozinka == password
                         select korisnici).SingleOrDefault();

            return query;
        }

        public Korisnici UzmiKorisnikaPoKorisnickomImenu(string username)
        {
            var query = (from korisnici in _context.Korisnici
                         where korisnici.KorisnickoIme == username
                         select korisnici).SingleOrDefault();

            return query;
        }

        public bool DodajKorisnika(Korisnici korisnik)
        {
            try
            {
                _context.Korisnici.InsertOnSubmit(korisnik);
                _context.SubmitChanges();
                return true;
            }
            catch(Exception ex)
            {
                return false;
            }
        }

        public bool DodajLink(Linkovi link)
        {
            try
            {
                _context.Linkovi.InsertOnSubmit(link);
                _context.SubmitChanges();
                
                return true;
            }
            catch(Exception ex)
            {
                return false;
            }
        }

        public IList<Korisnici> UzmiSveKorisnike()
        {
            var query = (from korisnici in _context.Korisnici
                         select korisnici).ToList();

            return query;
        }

        public void ObrisiKorisnika(int userId)
        {
            var query = (from korisnici in _context.Korisnici
                         where korisnici.Id == userId
                         select korisnici).SingleOrDefault();

            _context.Korisnici.DeleteOnSubmit(query);
            _context.SubmitChanges();
        }

        public Korisnici UzmiKorisnikaPoId(int userId)
        {
            var query = (from korisnici in _context.Korisnici
                         where korisnici.Id == userId
                         select korisnici).SingleOrDefault();

            return query;
        }

        public void AzurirajKorisnika(Korisnici korisnik)
        {
            var original = (from korisnici in _context.Korisnici
                            where korisnici.Id == korisnik.Id
                            select korisnici).SingleOrDefault();

            original.Ime = korisnik.Ime;
            original.Prezime = korisnik.Prezime;
            original.KorisnickoIme = korisnik.KorisnickoIme;
            original.Lozinka = korisnik.Lozinka;
            original.Email = korisnik.Email;
            
            _context.SubmitChanges();
        }
    }
}
